package com.enlorenz.common.util;

import com.enlorenz.common.entity.PairEntity;

public class XmlUtils {
	
	
	public static final String XML_HEAD_UTF_8="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
	


	/**
	 * 通过开始结束标签截取内容
	 * @param xml 数据内容
	 * @param startTag 开始标签
	 * @param endTag 结束标签
	 * @return 值
	 */
	public static String getQuickValueByKey(String xml,String startTag,String endTag){
		int startTagIndex=xml.indexOf(startTag)+startTag.length();
		int endTagIndex=xml.indexOf(endTag);
		return xml.substring(startTagIndex, endTagIndex);
	}
	
	/**
	 * 通过键快速获取值
	 * @param xml 数据内容
	 * @param key 关键字
	 * @return
	 */
	public static String getQuickValueByKey(String xml,String keyName){
		return getQuickValueByKey(xml, "<"+keyName+">", "</"+keyName+">");
	}
	
	/**
	 * 添加XML的属性
	 * @param xml xml缓存
	 * @param attName 属性名
	 * @param attValue 属性值
	 */
	public static void appendAttribute(StringBuffer xml,Object attName,Object attValue){
		xml.append(attName);
		xml.append("=\"");
		xml.append(attValue);
		xml.append("\"");
	}
	
	/**
	 * 创建开始标签
	 * @param xml xml缓存
	 * @param tagName 标签名
	 * @param pairs 属性
	 */
	public static void createStartTag(StringBuffer xml,String tagName,PairEntity ... pairs){
		createCommonTag(xml, tagName, pairs);
		xml.append(">");
	}
	
	/**
	 * 创建一对标签
	 * @param xml xml缓存
	 * @param tagName 标签名
	 * @param pairs 属性
	 */
	public static void createPairTag(StringBuffer xml,String tagName,String value,PairEntity ... pairs){
		createCommonTag(xml, tagName, pairs);
		xml.append(">");
		xml.append(value);
		createEndTag(xml, tagName);
	}
	
	/**
	 * 创建结尾标签
	 * @param xml xml缓存
	 * @param tagName 标签名
	 */
	public static void createEndTag(StringBuffer xml, String tagName) {
		xml.append("</");
		xml.append(tagName);
		xml.append(">");
	}
	
	
	/**
	 * 创建单个标签
	 * @param xml xml缓存
	 * @param tagName 标签名
	 * @param pairs 属性
	 */
	public static void createSingleTag(StringBuffer xml,String tagName,PairEntity ... pairs){
		createCommonTag(xml, tagName, pairs);
		xml.append("/>");
	}
	
	/**
	 * 创建公共的标签
	 * @param xml xml缓存
	 * @param tagName 标签名
	 * @param pairs 属性
	 */
	private static void createCommonTag(StringBuffer xml, String tagName,
			PairEntity... pairs) {
		xml.append("<");
		xml.append(tagName);
		if(!DataDetUtils.isArrEmpty(pairs)){
			for(PairEntity s:pairs){
				xml.append(" ");
				appendAttribute(xml, s.getKey(), s.getValue());
			}
		}
	}
}
